www.gusucode.com > matlab最优化程序源码---书籍 > matlab最优化程序/光盘程序/第8章 约束优化问题/minJSMixFun.m
function [x,minf] = minJSMixFun(f,g,h,x0,r0,c,var,eps) gx0 = Funval(g,var,x0); if gx0 >= 0 ; else disp('初始点必须满足不等式约束!'); x = NaN; minf = NaN; return; end if r0 <= 0 disp('初始障碍因子必须大于0!'); x = NaN; minf = NaN; return; end if c >= 1 || c < 0 disp('缩小系数必须大于0且小于1!'); x = NaN; minf = NaN; return; end if nargin == 7 eps = 1.0e-6; end FE = 0; for i=1:length(g) FE = FE + 1/g(i); end FH = transpose(h)*h; x1 = transpose(x0); FF = r0*FE + FH/sqrt(r0); SumF = f + FF ; [x2,minf] = minNT(SumF,transpose(x1),var); while 1 FF = r0*FE + FH/sqrt(r0); SumF = f + FF ; a0 = (c*x1 - x2)/(c-1); x2 = a0 + (x1 - a0)*c^2; [x3,minf] = minNT(SumF,transpose(x2),var); if norm(x3 - x2)<=eps x = x3; break; else r0 = c*r0; x1 = x2; x2 = x3; end end minf = Funval(f,var,x);